<?xml version="1.0"?>
<component name="org.nuxeo.ecm.comment.pageprovider.override">

  <require>org.nuxeo.ecm.comment.pageprovider</require>

  <extension point="providers" target="org.nuxeo.ecm.platform.query.api.PageProviderService">

    <!-- deprecated since 11.1 -->
    <!-- TreeCommentManager & PropertyCommentManager use it to provide backward compatibility on external entity API -->
    <coreQueryPageProvider name="GET_COMMENT_AS_EXTERNAL_ENTITY">
      <pattern>
        SELECT * FROM Comment WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->
    <coreQueryPageProvider name="GET_COMMENTS_FOR_DOCUMENT">
      <pattern>
        SELECT * FROM Comment WHERE comment:parentId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- deprecated since 11.1 / unused -->
    <coreQueryPageProvider name="GET_ANNOTATION_AS_EXTERNAL_ENTITY">
      <pattern>
        SELECT * FROM Annotation WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- deprecated since 11.1 / AnnotationService uses it when PropertyCommentManager is in place-->
    <coreQueryPageProvider name="GET_ANNOTATIONS_FOR_DOCUMENT">
      <pattern>
        SELECT * FROM Annotation WHERE comment:parentId = ? AND annotation:xpath = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->
    <coreQueryPageProvider name="GET_EXTERNAL_COMMENT_BY_COMMENT_ANCESTOR">
      <pattern>
        SELECT * FROM Comment WHERE comment:ancestorIds = ? AND externalEntity:entityId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- used by TreeCommentManager -->
    <coreQueryPageProvider name="GET_COMMENTS_FOR_DOCUMENT_BY_ECM_PARENT">
      <pattern>
        SELECT * FROM Comment WHERE ecm:parentId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- used by TreeCommentManager -->
    <coreQueryPageProvider name="GET_EXTERNAL_COMMENT_BY_ECM_ANCESTOR">
      <pattern>
        SELECT * FROM Comment WHERE ecm:ancestorId = ? AND externalEntity:entityId = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- used by PropertyCommentManager & TreeCommentManager -->
    <!-- currently not possible to do a ecm:ancestorId IN (..) -->
    <coreQueryPageProvider name="GET_COMMENTS_FOR_DOCUMENTS_BY_COMMENT_ANCESTOR">
      <pattern>
        SELECT * FROM Comment WHERE comment:ancestorIds IN ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

    <!-- AnnotationService uses it when TreeCommentManager is in place-->
    <coreQueryPageProvider name="GET_ANNOTATIONS_FOR_DOCUMENT_BY_ECM_PARENT">
      <pattern>
        SELECT * FROM Annotation WHERE ecm:parentId = ? AND annotation:xpath = ?
      </pattern>
      <pageSize>0</pageSize>
      <maxPageSize>0</maxPageSize>
    </coreQueryPageProvider>

  </extension>

</component>
